package model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.*;

import viewObjects.SedeVO;
@Entity
@Table(name="Sedes")
public class Sede implements Serializable{
	@Id
	private int id;
	private String direccion;
	private String descripcion;
	private String telefono;
	@OneToMany
	@JoinColumn(name="idSede")
	private List<Turno> turnos;
	private String estado;
	private int partidosPorDia;
	
	public Sede(){
		turnos = new ArrayList<Turno>();
	}

	public Sede(int id, String direccion, String descripcion, String telefono,
			String estado, int partidosPorDia) {
		this.id = id;
		this.direccion = direccion;
		this.descripcion = descripcion;
		this.telefono = telefono;
		this.estado = estado;
		this.partidosPorDia = partidosPorDia;
		
		turnos = new ArrayList<Turno>();
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getTelefono() {
		return telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public List<Turno> getTurnos() {
		return turnos;
	}

	public void addTurno(Turno turno){
		this.turnos.add(turno);
	}
	
	public void addTurnos(ArrayList<Turno> turnos) {
		this.turnos.addAll(turnos);
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public int getPartidosPorDia() {
		return partidosPorDia;
	}

	public void setPartidosPorDia(int partidosPorDia) {
		this.partidosPorDia = partidosPorDia;
	}	
	
	public SedeVO getMinimalView(){
		return new SedeVO(this.id, this.direccion, this.descripcion, this.telefono, null,this.estado,this.partidosPorDia);
	}
	
//	public Date puedo(Date fechaInicio){
//		
//		int cantidadPartidos = 0;
//		Date ultimoProgramado = null;
//		Calendar c = Calendar.getInstance(); 
//		
//			for (Turno t : this.turnos){
//				DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); 				
//				if (formatter.format(t.getFecha()).equals(formatter.format(fechaInicio))){
//					cantidadPartidos++;	
//					
//					if (ultimoProgramado == null || ultimoProgramado.compareTo(t.getFecha()) < 0){
//						ultimoProgramado = t.getFecha();
//					}
//				}
//			}
//
//		//Caso en que no hay programacion para ese dia
//		if (ultimoProgramado == null){			
//			c.setTime(fechaInicio); 
//			c.add(Calendar.HOUR, 7);	
//			c.add(Calendar.MINUTE, 30);
//			ultimoProgramado = c.getTime();
//		}
//		
//		if (cantidadPartidos < this.partidosPorDia){
//			//Puedo agregar uno en el mismo dia
//			c.setTime(ultimoProgramado); 			
//			c.add(Calendar.HOUR, 1);
//			c.add(Calendar.MINUTE, 30);
//			this.turnos.add(new Turno(c.getTime(), Estado.TEMPORAL));
//			return c.getTime();		 
//		}else if (ultimoProgramado.getDay() == 6){
//			//No pude en ese dia, pero si es sabado puedo en el domingo
//			c.setTime(fechaInicio); 
//			c.add(Calendar.DATE, 1);
//			return puedo(c.getTime());
//		}	
//		
//		//Cuando no pude ni sabado ni domingo
//		return null;
//	}
	
//	public SedeView getView(){
//		return new SedeView(this.id,this.direccion, this.descripcion, this.telefono, this.estado, this.partidosPorDia);
//	}
}
